package com.satan.juc.demo22;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

/**
 * @Author: Demon
 * @Date: 2024/3/29 21:26
 * @Description: 创建一个可缓存的线程池，根据需要动态调整线程数量，适合短期任务。
 **/
public class CachedThreadPoolExample {
    //当提交任务时，如果线程池中有空闲线程，则会复用这些线程；如果没有，则会创建新的线程。
    //当线程空闲超过60秒后，它们会被自动终止并从缓存中移除。
    //这种类型的线程池适合执行大量的短暂任务，可以灵活地回收空闲线程，减少资源消耗。
    public static void main(String[] args) {
        // 创建一个可缓存的线程池
        ExecutorService executor = Executors.newCachedThreadPool();
        // 提交任务给线程池
        for (int i = 0; i < 100; i++) {
            final int taskId = i;
            executor.execute(() -> {
                System.out.println("执行任务: " + taskId + "，使用线程: " + Thread.currentThread().getName());
            });
        }

        // 关闭线程池
        executor.shutdown();
    }
}
